/**
 * Chapter 1
 * 1.9 容易混淆的const
 *
 * 实参传递给形参（赋值）
 * 满足下列条件之一
 * 两个操作数都是指向有限定符或无限定符的相容类型的指针
 * 左边指针所指向的类型必须具有右边所指向的类型的全部限定符
 *
 * const char **是没有限定符的指针类型，指向 const char *
 * char **也是没有限定符的指针类型，指向 char *
 * 由于二者都是没有限定符的指针类型，但他们所指向的类型不一样，所以他们是不相容的
 */

void foo(const char **p) {}
int main(int argc, char **argv)
{
    // const char ** 与 char **不相容
    foo(argv);
    const int a = 10;
    // int * 与 const int *不相容
    int *p = &a;
    return 0;
}